home *** CD-ROM | disk | FTP | other *** search
/ Young Minds / Young Minds Interactive CD-ROM.ISO / dungeon / dso6.f < prev    next >
Encoding:
Text File  |  1987-09-16  |  2.3 KB  |  121 lines

  1. C GHERE--    IS GLOBAL ACTUALLY IN THIS ROOM?
  2. C
  3. C COPYRIGHT 1980, INFOCOM COMPUTERS AND COMMUNICATIONS, CAMBRIDGE MA. 02142
  4. C ALL RIGHTS RESERVED, COMMERCIAL USAGE STRICTLY PROHIBITED
  5. C WRITTEN BY R. M. SUPNIK
  6. C
  7. C DECLARATIONS
  8. C
  9.     LOGICAL FUNCTION GHERE(OBJ,RM)
  10.     IMPLICIT INTEGER(A-Z)
  11. #include "rooms.h"
  12. #include "rflag.h"
  13. #include "rindex.h"
  14. C
  15.     COMMON /STAR/ MBASE,STRBIT
  16. C GHERE, PAGE 2
  17. C
  18.     GHERE=.TRUE.
  19. C                        !ASSUME WINS.
  20.     GO TO (1000,1000,1000,1000,1000,1000,
  21. &        1000,1000,1000,1000,1000,
  22. &        2000,3000,4000,5000,5000,5000,6000,
  23. &        7000,8000,9000,9100,8000,10000,11000),OBJ-STRBIT
  24.     CALL BUG(60,OBJ)
  25. C
  26. C 1000--    STARS ARE ALWAYS HERE
  27. C
  28. 1000    RETURN
  29. C
  30. C 2000--    BIRD
  31. C
  32. 2000    GHERE=((RM.GE.FORE1).AND.(RM.LT.CLEAR)).OR.(RM.EQ.MTREE)
  33.     RETURN
  34. C
  35. C 3000--    TREE
  36. C
  37. 3000    GHERE=((RM.GE.FORE1).AND.(RM.LT.CLEAR)).AND.(RM.NE.FORE3)
  38.     RETURN
  39. C
  40. C 4000--    NORTH WALL
  41. C
  42. 4000    GHERE=((RM.GE.BKVW).AND.(RM.LE.BKBOX)).OR.(RM.EQ.CPUZZ)
  43.     RETURN
  44. C
  45. C 5000--    EAST, SOUTH, WEST WALLS
  46. C
  47. 5000    GHERE=((RM.GE.BKVW).AND.(RM.LT.BKBOX)).OR.(RM.EQ.CPUZZ)
  48.     RETURN
  49. C
  50. C 6000--    GLOBAL WATER
  51. C
  52. 6000    GHERE=and(RFLAG(RM),(RWATER+RFILL)).NE.0
  53.     RETURN
  54. C
  55. C 7000--    GLOBAL GUARDIANS
  56. C
  57. 7000    GHERE=((RM.GE.MRC).AND.(RM.LE.MRD)).OR.
  58. &        ((RM.GE.MRCE).AND.(RM.LE.MRDW)).OR.(RM.EQ.INMIR)
  59.     RETURN
  60. C
  61. C 8000--    ROSE/CHANNEL
  62. C
  63. 8000    GHERE=((RM.GE.MRA).AND.(RM.LE.MRD)).OR.(RM.EQ.INMIR)
  64.     RETURN
  65. C
  66. C 9000--    MIRROR
  67. C 9100        PANEL
  68. C
  69. 9100    IF(RM.EQ.FDOOR) RETURN
  70. C                        !PANEL AT FDOOR.
  71. 9000    GHERE=((RM.GE.MRA).AND.(RM.LE.MRC)).OR.
  72. &        ((RM.GE.MRAE).AND.(RM.LE.MRCW))
  73.     RETURN
  74. C
  75. C 10000--    MASTER
  76. C
  77. 10000    GHERE=(RM.EQ.FDOOR).OR.(RM.EQ.NCORR).OR.(RM.EQ.PARAP).OR.
  78. &        (RM.EQ.CELL)
  79.     RETURN
  80. C
  81. C 11000--    LADDER
  82. C
  83. 11000    GHERE=(RM.EQ.CPUZZ)
  84.     RETURN
  85. C
  86.     END
  87. C MRHERE--    IS MIRROR HERE?
  88. C
  89. C DECLARATIONS
  90. C
  91.     INTEGER FUNCTION MRHERE(RM)
  92.     IMPLICIT INTEGER(A-Z)
  93. C
  94. C ROOMS
  95. #include "rindex.h"
  96. #include "flags.h"
  97. C MRHERE, PAGE 2
  98. C
  99.     IF((RM.LT.MRAE).OR.(RM.GT.MRDW)) GO TO 100
  100. C
  101. C RM IS AN E-W ROOM, MIRROR MUST BE N-S (MDIR= 0 OR 180)
  102. C
  103.     MRHERE=1
  104. C                        !ASSUME MIRROR 1 HERE.
  105.     IF(MOD(RM-MRAE,2).EQ.(MDIR/180)) MRHERE=2
  106.     RETURN
  107. C
  108. C RM IS NORTH OR SOUTH OF MIRROR.  IF MIRROR IS N-S OR NOT
  109. C WITHIN ONE ROOM OF RM, LOSE.
  110. C
  111. 100    MRHERE=0
  112.     IF((IABS(MLOC-RM).NE.1).OR.(MOD(MDIR,180).EQ.0)) RETURN
  113. C
  114. C RM IS WITHIN ONE OF MLOC, AND MDIR IS E-W
  115. C
  116.     MRHERE=1
  117.     IF(((RM.LT.MLOC).AND.(MDIR.LT.180)).OR.
  118. &      ((RM.GT.MLOC).AND.(MDIR.GT.180))) MRHERE=2
  119.     RETURN
  120.     END
  121.